﻿// Inner Fire 游戏引擎库
// DirectX 渲染环境变量
//
// Copyright (c) 2024 by 尔西大帝. All rights reserved.
//
// 所属层级：元素层（2）
// 用于一次渲染中的环境变量。比如说，天空盒的贴图是什么，字体的贴图是什么
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2024-11-29

#pragma once

#include <EASTL/vector.h>
#include <dx/mesh/dx_mesh.h>
#include <dx/mesh/render_item.h>
#include <dx/mesh/skin_animator.h>
#include <dx/texture/dx_material.h>
#include <dx/texture/dx_texture.h>

namespace ifire::dx {

struct DxDrawDesc {
  // 绘制空白贴图的贴图索引
  int empty_normal_index;
  // 绘制字体的贴图索引
  int font_index;
  // 绘制UI的Sprite的贴图索引
  int ui_sprite_index;
  // 空索引
  DxMesh* empty_mesh;
  // 天空盒
  DxTexture* sky_box;
  // 空的法线
  DxTexture* empty_normal;
  // 游戏对象（GameObject）的总队列
  eastl::vector<dx::RenderItemPtr>* items;
  // 分层的渲染对象
  eastl::vector<dx::RenderItem*>* render_layers;
  // 贴图
  eastl::vector<dx::MaterialPtr>* materials;
  // 动画
  eastl::vector<SkinAnimatorPtr>* animators;
};

} // namespace ifire::dx